In [16]:
import os
import torch
import kagglehub
import numpy as np
import polars as pl
import sklearn as sk
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans

from dota import Dota2
from heroes import get_heroes
from model import Dota2Autoencoder
from dataset import get_dataset
from leagues import get_tier_one
from mpl_toolkits.mplot3d import Axes3D
from sklearn.cluster import DBSCAN
from itertools import product
from sklearn.cluster import AgglomerativeClustering
from sklearn.mixture import GaussianMixture
from sklearn.cluster import OPTICS

def plot_clustering_grid(latent_space, title, n_clusters=4):
    # Organize plots in a 2x2 grid
    fig, axs = plt.subplots(2, 2, figsize=(10, 8))
    
    # KMeans clustering
    kmeans = KMeans(n_clusters=n_clusters, random_state=42)
    cluster_labels = kmeans.fit_predict(latent_space)
    for cluster_id in np.unique(cluster_labels):
        mask = cluster_labels == cluster_id
        axs[0, 0].scatter(latent_space[mask, 0], latent_space[mask, 1], 
                       label=f"Cluster {cluster_id}", alpha=0.7)
    axs[0, 0].set_xlabel("Latent X")
    axs[0, 0].set_ylabel("Latent Y")
    axs[0, 0].set_title("KMeans Clustering")
    axs[0, 0].legend()

    # Agglomerative clustering
    agglo = AgglomerativeClustering(n_clusters=n_clusters)
    agglo_labels = agglo.fit_predict(latent_space)
    for cluster_id in np.unique(agglo_labels):
        mask = agglo_labels == cluster_id
        axs[0, 1].scatter(latent_space[mask, 0], latent_space[mask, 1], 
                       label=f"Cluster {cluster_id}", alpha=0.7)
    axs[0, 1].set_xlabel("Latent X")
    axs[0, 1].set_ylabel("Latent Y")
    axs[0, 1].set_title("Agglomerative Clustering")
    axs[0, 1].legend()

    # Gaussian Mixture clustering
    gmm = GaussianMixture(n_components=n_clusters, random_state=42)
    gmm_labels = gmm.fit_predict(latent_space)
    for cluster_id in np.unique(gmm_labels):
        mask = gmm_labels == cluster_id
        axs[1, 0].scatter(latent_space[mask, 0], latent_space[mask, 1], 
                       label=f"Cluster {cluster_id}", alpha=0.7)
    axs[1, 0].set_xlabel("Latent X")
    axs[1, 0].set_ylabel("Latent Y")
    axs[1, 0].set_title("Gaussian Mixture Clustering")
    axs[1, 0].legend()

    # OPTICS clustering
    optics = OPTICS(min_samples=10, xi=0.05, min_cluster_size=0.05)
    optics_labels = optics.fit_predict(latent_space)
    for cluster_id in np.unique(optics_labels):
        mask = optics_labels == cluster_id
        if cluster_id == -1:
            axs[1, 1].scatter(latent_space[mask, 0], latent_space[mask, 1], 
                           label="RuĂ­do", alpha=0.5, c="k")
        else:
            axs[1, 1].scatter(latent_space[mask, 0], latent_space[mask, 1], 
                           label=f"Cluster {cluster_id}", alpha=0.7)
    axs[1, 1].set_xlabel("Latent X")
    axs[1, 1].set_ylabel("Latent Y")
    axs[1, 1].set_title("OPTICS Clustering")
    axs[1, 1].legend()
    
    plt.tight_layout()
    plt.suptitle(f"Clustering de {title}", y=1.02)
    plt.show()
    
    return {
        "kmeans": cluster_labels,
        "agglomerative": agglo_labels,
        "gmm": gmm_labels,
        "optics": optics_labels
    }
In [17]:
def plot_clustering_grid_3d(latent_space, title, n_clusters=4, figsize=(12, 10), alpha=0.7, elev=30, azim=45):
    # Verificar se o espaço latente tem pelo menos 3 dimensões
    if latent_space.shape[1] < 3:
        raise ValueError("O espaço latente precisa ter pelo menos 3 dimensões para visualização 3D")
    
    # Organize plots in a 2x2 grid
    fig = plt.figure(figsize=figsize)
    
    # KMeans clustering
    ax1 = fig.add_subplot(2, 2, 1, projection='3d')
    kmeans = KMeans(n_clusters=n_clusters, random_state=42)
    cluster_labels = kmeans.fit_predict(latent_space)
    
    for cluster_id in np.unique(cluster_labels):
        mask = cluster_labels == cluster_id
        ax1.scatter(latent_space[mask, 0], latent_space[mask, 1], latent_space[mask, 2],
                   label=f"Cluster {cluster_id}", alpha=alpha)
    
    ax1.set_xlabel("Latent X")
    ax1.set_ylabel("Latent Y")
    ax1.set_zlabel("Latent Z")# type: ignore
    ax1.set_title("KMeans Clustering")
    ax1.legend()
    ax1.view_init(elev=elev, azim=azim)# type: ignore
    
    # Agglomerative clustering
    ax2 = fig.add_subplot(2, 2, 2, projection='3d')
    agglo = AgglomerativeClustering(n_clusters=n_clusters)
    agglo_labels = agglo.fit_predict(latent_space)
    
    for cluster_id in np.unique(agglo_labels):
        mask = agglo_labels == cluster_id
        ax2.scatter(latent_space[mask, 0], latent_space[mask, 1], latent_space[mask, 2],
                   label=f"Cluster {cluster_id}", alpha=alpha)
    
    ax2.set_xlabel("Latent X")
    ax2.set_ylabel("Latent Y")
    ax2.set_zlabel("Latent Z") # type: ignore
    ax2.set_title("Agglomerative Clustering")
    ax2.legend()
    ax2.view_init(elev=elev, azim=azim) # type: ignore
    
    # Gaussian Mixture clustering
    ax3 = fig.add_subplot(2, 2, 3, projection='3d')
    gmm = GaussianMixture(n_components=n_clusters, random_state=42)
    gmm_labels = gmm.fit_predict(latent_space)
    
    for cluster_id in np.unique(gmm_labels):
        mask = gmm_labels == cluster_id
        ax3.scatter(latent_space[mask, 0], latent_space[mask, 1], latent_space[mask, 2],
                   label=f"Cluster {cluster_id}", alpha=alpha)
    
    ax3.set_xlabel("Latent X")
    ax3.set_ylabel("Latent Y")
    ax3.set_zlabel("Latent Z")# type: ignore
    ax3.set_title("Gaussian Mixture Clustering")
    ax3.legend()
    ax3.view_init(elev=elev, azim=azim)# type: ignore
    
    # OPTICS clustering
    ax4 = fig.add_subplot(2, 2, 4, projection='3d')
    optics = OPTICS(min_samples=10, xi=0.05, min_cluster_size=0.05)
    optics_labels = optics.fit_predict(latent_space)
    
    for cluster_id in np.unique(optics_labels):
        mask = optics_labels == cluster_id
        if cluster_id == -1:
            ax4.scatter(latent_space[mask, 0], latent_space[mask, 1], latent_space[mask, 2],
                       label="RuĂ­do", alpha=alpha, c="k")
        else:
            ax4.scatter(latent_space[mask, 0], latent_space[mask, 1], latent_space[mask, 2],
                       label=f"Cluster {cluster_id}", alpha=alpha)
    
    ax4.set_xlabel("Latent X")
    ax4.set_ylabel("Latent Y")
    ax4.set_zlabel("Latent Z")# type: ignore
    ax4.set_title("OPTICS Clustering")
    ax4.legend()
    ax4.view_init(elev=elev, azim=azim)# type: ignore
    
    plt.tight_layout()
    plt.suptitle(f"Clustering 3D de {title}", y=1.02)
    plt.show()
    
    return {
        "kmeans": cluster_labels,
        "agglomerative": agglo_labels,
        "gmm": gmm_labels,
        "optics": optics_labels
    }
In [18]:
import os
import torch
import kagglehub
import numpy as np
import polars as pl
import sklearn as sk
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans

from dota import Dota2
from heroes import get_heroes
from model import Dota2Autoencoder
from dataset import get_dataset
from leagues import get_tier_one
from mpl_toolkits.mplot3d import Axes3D
from sklearn.cluster import DBSCAN
from itertools import product
from sklearn.cluster import AgglomerativeClustering
from sklearn.mixture import GaussianMixture
from sklearn.cluster import OPTICS

path = kagglehub.dataset_download("bwandowando/dota-2-pro-league-matches-2023")
heroes, hero_cols, dict_attributes, dict_roles = get_heroes(path)
tier_one_matches = get_tier_one(path)
n_heroes = len(heroes.collect())
player_cols = []
hero_cols = []

def cluster(datasets: list[pl.DataFrame], internationals: list[pl.DataFrame], hero_cols, player_cols, latent_dim=2, n_clusters=6):
    hero_pick_embedding_dim: int = 16
    hero_role_embedding_dim: int = 8
    n_players: int = 5
    n_bans: int = 7
    # latent_dim: int = 8
    hidden_layers: list[int] = [256, 128, 64, 32]
    dropout: float = 0.3
    learning_rate: float = 0.001
    force: bool = False

    autoencoders: list[Dota2Autoencoder] = []

    for ti, dataset in enumerate(datasets):
        autoencoder = Dota2Autoencoder(
            dict_roles=dict_roles,
            hero_cols=hero_cols[ti],
            player_cols=player_cols[ti],
            n_heroes=n_heroes,
            hero_pick_embedding_dim=hero_pick_embedding_dim,
            hero_role_embedding_dim=hero_role_embedding_dim,
            n_players=n_players,
            n_bans=n_bans,
            latent_dim=latent_dim,
            hidden_layers=hidden_layers,
            dropout=dropout,
            learning_rate=learning_rate,
            name=f"ti_{2024 - ti}_{latent_dim}_autoencoder",
        )
        if (os.path.exists(f"ti_{2024 - ti}_{latent_dim}_best_model.h5") and force == False):
            print(f"Loading pre-trained model for TI {2024 - ti}")
            autoencoder.load_model(f"ti_{2024 - ti}_{latent_dim}_autoencoder.h5", silent=True)
        else:
            print(f"Treinando para TI {2024 - ti} Latent Dim: {latent_dim}")
            train_df, val_df, test_df = dataset.sample(fraction=0.7, seed=42), dataset.sample(
                fraction=0.15, seed=42), dataset.sample(fraction=0.15, seed=42)
            autoencoder.train_data(train_df, val_df, epochs=100, patience=20,
                                best_model_filename=f"ti_{2024 - ti}_{latent_dim}_best_model.h5", silent=True)
            autoencoder.save_loss_history(
                f"ti_{2024 - ti}_{latent_dim}_loss_history.csv", silent=True)
            autoencoder.save_model(f"ti_{2024 - ti}_{latent_dim}_autoencoder.h5", silent=True)
            accuracy, mse, _, _ = autoencoder.test_model(test_df)
            print(
                f"TI {2024 - ti} - Accuracy: {accuracy}, MSE: {mse}, Loss: {autoencoder.best_val_loss}")
            print("=" * 50)
        autoencoders.append(autoencoder)

    latent_spaces = []
    for autoencoder, ti_matches in product(autoencoders, internationals):
        ti = ti_matches.select('league_name').unique().item()
        print(f"Processing {ti_matches.shape[0]} matches from {ti}")
        print(f"Autoencoder name: {autoencoder.name}")
        autoencoder.eval()
        encoded = []
        total_similarity = 0
        matches_encoded = []
        autoencoder.eval()
        with torch.no_grad():
            for batch in ti_matches.iter_slices(32):
                data_np = batch.to_numpy()
                try:
                    matches_encoded.append(batch.select("match_id").to_numpy())
                    latent, reconstructed = autoencoder.encode(
                        data_np, min(32, batch.shape[0]), ti_matches.columns)
                    similarity = torch.cosine_similarity(autoencoder.flatten(
                        data_np, min(32, batch.shape[0]), ti_matches.columns), reconstructed)
                    total_similarity += similarity.sum().item()
                    encoded.append(latent.cpu().numpy())
                except RuntimeError as e:
                    print(f"RuntimeError: {e}")
                    print("Check if the input shape matches the model's expected input size.")
                    print(f"Expected input size: {autoencoder.input_dim if hasattr(autoencoder, 'input_dim') else 'unknown'}")
                    print(f"Actual input size: {data_np.shape[1]}")
                    raise

        latent_space = np.concatenate(encoded, axis=0)
        latent_spaces.append((ti, ti_matches, latent_space, matches_encoded, autoencoder.name))
        if(latent_dim == 2):
            cluster_results = plot_clustering_grid(latent_space, f"{ti}  {autoencoder.name.upper()}", n_clusters=n_clusters)
        if(latent_dim == 3):
            cluster_results = plot_clustering_grid_3d(
                latent_space, 
                f"{ti} - {autoencoder.name.upper()}",
                n_clusters=n_clusters,
                elev=30,  # Ajuste a elevação para melhor visualização
                azim=120   # Ajuste o ângulo de visualização
            )
        else:
            kmeans = KMeans(n_clusters=n_clusters, random_state=42)
            cluster_labels = kmeans.fit_predict(latent_space)

            agglo = AgglomerativeClustering(n_clusters=n_clusters)
            agglo_labels = agglo.fit_predict(latent_space)

            gmm = GaussianMixture(n_components=n_clusters, random_state=42)
            gmm_labels = gmm.fit_predict(latent_space)

            optics = OPTICS(min_samples=10, xi=0.05, min_cluster_size=0.05)
            optics_labels = optics.fit_predict(latent_space)
            cluster_results = {
                "kmeans": cluster_labels,
                "agglomerative": agglo_labels,
                "gmm": gmm_labels,
                "optics": optics_labels
            }
        print("="*50)
        print(f"Cluster labels: {np.unique(cluster_results['kmeans'])}")
        print(f"Agglomerative labels: {np.unique(cluster_results['agglomerative'])}")
        print(f"GMM labels: {np.unique(cluster_results['gmm'])}")
        print(f"OPTICS labels: {np.unique(cluster_results['optics'])}")
        for algo, labels in cluster_results.items():
            unique, counts = np.unique(labels, return_counts=True)
            print(f"Algoritmo: {algo}")
            for cluster_id, count in zip(unique, counts):
                print(f"  Cluster {cluster_id}: {count} partidas")
        print("="*50)
In [19]:
import os
import torch
import kagglehub
import numpy as np
import polars as pl
import sklearn as sk
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans

from dota import Dota2
from heroes import get_heroes
from model import Dota2Autoencoder
from dataset import get_dataset
from leagues import get_tier_one
from mpl_toolkits.mplot3d import Axes3D
from sklearn.cluster import DBSCAN
from itertools import product
from sklearn.cluster import AgglomerativeClustering
from sklearn.mixture import GaussianMixture
from sklearn.cluster import OPTICS

heroes, _, dict_attributes, dict_roles = get_heroes(path)
tier_one_matches = get_tier_one(path)
n_heroes = len(heroes.collect())
player_cols = []
hero_cols = []

print(f"Carregando dados de torneios...")
ti_2024, p_cols, h_cols = get_dataset(path, specific_patches=[56], verbose=False)
player_cols.append(p_cols)
hero_cols.append(h_cols)
ti_2023, p_cols, h_cols = get_dataset(path, specific_patches=[53], verbose=False)
player_cols.append(p_cols)
hero_cols.append(h_cols)
ti_2022, p_cols, h_cols = get_dataset(path, specific_patches=[51], verbose=False)
player_cols.append(p_cols)
hero_cols.append(h_cols)
ti_2021, p_cols, h_cols = get_dataset(path, specific_patches=[49, 48], verbose=False)
player_cols.append(p_cols)
hero_cols.append(h_cols)

print(f"Carregando dados de torneios concluĂ­do.")
matches_ti_2024 = ti_2024.join(tier_one_matches, on="league_id", how="left").filter(
    pl.col("league_name") == "The International 2024")
matches_ti_2023 = ti_2023.join(tier_one_matches, on="league_id", how="left").filter(
    pl.col("league_name") == "The International 2023")
matches_ti_2022 = ti_2022.join(tier_one_matches, on="league_id", how="left").filter(
    pl.col("league_name") == "The International 2022")
matches_ti_2021 = ti_2021.join(tier_one_matches, on="league_id", how="left").filter(
    pl.col("league_name") == "The International 2021")
internationals = [matches_ti_2024, matches_ti_2023,
                  matches_ti_2022, matches_ti_2021]
datasets = [ti_2024, ti_2023, ti_2022, ti_2021]
Carregando dados de torneios...
Carregando dados de torneios concluĂ­do.
Carregando dados de torneios concluĂ­do.
In [20]:
print("Cluster de datasets usando 2 dimensões latentes:")
cluster(datasets, internationals, hero_cols, player_cols, latent_dim=2, n_clusters=6)
print("Cluster de datasets usando 3 dimensões latentes:")
cluster(datasets, internationals, hero_cols, player_cols, latent_dim=3, n_clusters=6)
print("Cluster de datasets usando 4 dimensões latentes:")
cluster(datasets, internationals, hero_cols, player_cols, latent_dim=4, n_clusters=6)
print("Cluster de datasets usando 48 dimensões latentes:")
cluster(datasets, internationals, hero_cols, player_cols, latent_dim=8, n_clusters=6)
Cluster de datasets usando 2 dimensões latentes:
Loading pre-trained model for TI 2024
Loading pre-trained model for TI 2023
Loading pre-trained model for TI 2022
Loading pre-trained model for TI 2021
Processing 97 matches from The International 2024
Autoencoder name: ti_2024_2_autoencoder
Loading pre-trained model for TI 2023
Loading pre-trained model for TI 2022
Loading pre-trained model for TI 2021
Processing 97 matches from The International 2024
Autoencoder name: ti_2024_2_autoencoder
No description has been provided for this image
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [-1  0  1  2]
Algoritmo: kmeans
  Cluster 0: 21 partidas
  Cluster 1: 20 partidas
  Cluster 2: 22 partidas
  Cluster 3: 19 partidas
  Cluster 4: 8 partidas
  Cluster 5: 7 partidas
Algoritmo: agglomerative
  Cluster 0: 14 partidas
  Cluster 1: 24 partidas
  Cluster 2: 25 partidas
  Cluster 3: 16 partidas
  Cluster 4: 12 partidas
  Cluster 5: 6 partidas
Algoritmo: gmm
  Cluster 0: 22 partidas
  Cluster 1: 21 partidas
  Cluster 2: 23 partidas
  Cluster 3: 19 partidas
  Cluster 4: 7 partidas
  Cluster 5: 5 partidas
Algoritmo: optics
  Cluster -1: 63 partidas
  Cluster 0: 15 partidas
  Cluster 1: 7 partidas
  Cluster 2: 12 partidas
==================================================
Processing 132 matches from The International 2023
Autoencoder name: ti_2024_2_autoencoder
No description has been provided for this image
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [-1  0  1]
Algoritmo: kmeans
  Cluster 0: 21 partidas
  Cluster 1: 15 partidas
  Cluster 2: 29 partidas
  Cluster 3: 23 partidas
  Cluster 4: 33 partidas
  Cluster 5: 11 partidas
Algoritmo: agglomerative
  Cluster 0: 31 partidas
  Cluster 1: 30 partidas
  Cluster 2: 25 partidas
  Cluster 3: 22 partidas
  Cluster 4: 8 partidas
  Cluster 5: 16 partidas
Algoritmo: gmm
  Cluster 0: 13 partidas
  Cluster 1: 13 partidas
  Cluster 2: 35 partidas
  Cluster 3: 22 partidas
  Cluster 4: 40 partidas
  Cluster 5: 9 partidas
Algoritmo: optics
  Cluster -1: 113 partidas
  Cluster 0: 10 partidas
  Cluster 1: 9 partidas
==================================================
Processing 195 matches from The International 2022
Autoencoder name: ti_2024_2_autoencoder
No description has been provided for this image
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [-1  0  1]
Algoritmo: kmeans
  Cluster 0: 53 partidas
  Cluster 1: 44 partidas
  Cluster 2: 55 partidas
  Cluster 3: 13 partidas
  Cluster 4: 20 partidas
  Cluster 5: 10 partidas
Algoritmo: agglomerative
  Cluster 0: 30 partidas
  Cluster 1: 68 partidas
  Cluster 2: 37 partidas
  Cluster 3: 22 partidas
  Cluster 4: 32 partidas
  Cluster 5: 6 partidas
Algoritmo: gmm
  Cluster 0: 54 partidas
  Cluster 1: 43 partidas
  Cluster 2: 69 partidas
  Cluster 3: 10 partidas
  Cluster 4: 12 partidas
  Cluster 5: 7 partidas
Algoritmo: optics
  Cluster -1: 164 partidas
  Cluster 0: 13 partidas
  Cluster 1: 18 partidas
==================================================
Processing 758 matches from The International 2021
Autoencoder name: ti_2024_2_autoencoder
No description has been provided for this image
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [-1  0  1  2  3]
Algoritmo: kmeans
  Cluster 0: 110 partidas
  Cluster 1: 98 partidas
  Cluster 2: 172 partidas
  Cluster 3: 154 partidas
  Cluster 4: 154 partidas
  Cluster 5: 70 partidas
Algoritmo: agglomerative
  Cluster 0: 226 partidas
  Cluster 1: 130 partidas
  Cluster 2: 134 partidas
  Cluster 3: 104 partidas
  Cluster 4: 132 partidas
  Cluster 5: 32 partidas
Algoritmo: gmm
  Cluster 0: 80 partidas
  Cluster 1: 64 partidas
  Cluster 2: 180 partidas
  Cluster 3: 196 partidas
  Cluster 4: 192 partidas
  Cluster 5: 46 partidas
Algoritmo: optics
  Cluster -1: 441 partidas
  Cluster 0: 144 partidas
  Cluster 1: 78 partidas
  Cluster 2: 57 partidas
  Cluster 3: 38 partidas
==================================================
Processing 97 matches from The International 2024
Autoencoder name: ti_2023_2_autoencoder
No description has been provided for this image
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [-1  0]
Algoritmo: kmeans
  Cluster 0: 25 partidas
  Cluster 1: 17 partidas
  Cluster 2: 13 partidas
  Cluster 3: 12 partidas
  Cluster 4: 15 partidas
  Cluster 5: 15 partidas
Algoritmo: agglomerative
  Cluster 0: 34 partidas
  Cluster 1: 24 partidas
  Cluster 2: 13 partidas
  Cluster 3: 5 partidas
  Cluster 4: 10 partidas
  Cluster 5: 11 partidas
Algoritmo: gmm
  Cluster 0: 29 partidas
  Cluster 1: 15 partidas
  Cluster 2: 12 partidas
  Cluster 3: 12 partidas
  Cluster 4: 10 partidas
  Cluster 5: 19 partidas
Algoritmo: optics
  Cluster -1: 31 partidas
  Cluster 0: 66 partidas
==================================================
Processing 132 matches from The International 2023
Autoencoder name: ti_2023_2_autoencoder
No description has been provided for this image
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [-1  0  1]
Algoritmo: kmeans
  Cluster 0: 27 partidas
  Cluster 1: 12 partidas
  Cluster 2: 23 partidas
  Cluster 3: 5 partidas
  Cluster 4: 25 partidas
  Cluster 5: 40 partidas
Algoritmo: agglomerative
  Cluster 0: 47 partidas
  Cluster 1: 22 partidas
  Cluster 2: 28 partidas
  Cluster 3: 18 partidas
  Cluster 4: 12 partidas
  Cluster 5: 5 partidas
Algoritmo: gmm
  Cluster 0: 22 partidas
  Cluster 1: 9 partidas
  Cluster 2: 22 partidas
  Cluster 3: 5 partidas
  Cluster 4: 25 partidas
  Cluster 5: 49 partidas
Algoritmo: optics
  Cluster -1: 105 partidas
  Cluster 0: 17 partidas
  Cluster 1: 10 partidas
==================================================
Processing 195 matches from The International 2022
Autoencoder name: ti_2023_2_autoencoder
No description has been provided for this image
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [-1  0]
Algoritmo: kmeans
  Cluster 0: 16 partidas
  Cluster 1: 47 partidas
  Cluster 2: 37 partidas
  Cluster 3: 46 partidas
  Cluster 4: 37 partidas
  Cluster 5: 12 partidas
Algoritmo: agglomerative
  Cluster 0: 59 partidas
  Cluster 1: 36 partidas
  Cluster 2: 53 partidas
  Cluster 3: 13 partidas
  Cluster 4: 22 partidas
  Cluster 5: 12 partidas
Algoritmo: gmm
  Cluster 0: 14 partidas
  Cluster 1: 62 partidas
  Cluster 2: 29 partidas
  Cluster 3: 48 partidas
  Cluster 4: 33 partidas
  Cluster 5: 9 partidas
Algoritmo: optics
  Cluster -1: 153 partidas
  Cluster 0: 42 partidas
==================================================
Processing 758 matches from The International 2021
Autoencoder name: ti_2023_2_autoencoder
No description has been provided for this image
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [-1  0  1  2  3]
Algoritmo: kmeans
  Cluster 0: 120 partidas
  Cluster 1: 62 partidas
  Cluster 2: 244 partidas
  Cluster 3: 124 partidas
  Cluster 4: 94 partidas
  Cluster 5: 114 partidas
Algoritmo: agglomerative
  Cluster 0: 86 partidas
  Cluster 1: 268 partidas
  Cluster 2: 176 partidas
  Cluster 3: 80 partidas
  Cluster 4: 64 partidas
  Cluster 5: 84 partidas
Algoritmo: gmm
  Cluster 0: 90 partidas
  Cluster 1: 66 partidas
  Cluster 2: 368 partidas
  Cluster 3: 102 partidas
  Cluster 4: 42 partidas
  Cluster 5: 90 partidas
Algoritmo: optics
  Cluster -1: 537 partidas
  Cluster 0: 48 partidas
  Cluster 1: 63 partidas
  Cluster 2: 70 partidas
  Cluster 3: 40 partidas
==================================================
Processing 97 matches from The International 2024
Autoencoder name: ti_2022_2_autoencoder
No description has been provided for this image
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [-1  0]
Algoritmo: kmeans
  Cluster 0: 27 partidas
  Cluster 1: 14 partidas
  Cluster 2: 22 partidas
  Cluster 3: 2 partidas
  Cluster 4: 28 partidas
  Cluster 5: 4 partidas
Algoritmo: agglomerative
  Cluster 0: 23 partidas
  Cluster 1: 35 partidas
  Cluster 2: 20 partidas
  Cluster 3: 13 partidas
  Cluster 4: 4 partidas
  Cluster 5: 2 partidas
Algoritmo: gmm
  Cluster 0: 31 partidas
  Cluster 1: 12 partidas
  Cluster 2: 21 partidas
  Cluster 3: 2 partidas
  Cluster 4: 27 partidas
  Cluster 5: 4 partidas
Algoritmo: optics
  Cluster -1: 64 partidas
  Cluster 0: 33 partidas
==================================================
Processing 132 matches from The International 2023
Autoencoder name: ti_2022_2_autoencoder
No description has been provided for this image
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [-1  0  1]
Algoritmo: kmeans
  Cluster 0: 37 partidas
  Cluster 1: 28 partidas
  Cluster 2: 24 partidas
  Cluster 3: 18 partidas
  Cluster 4: 20 partidas
  Cluster 5: 5 partidas
Algoritmo: agglomerative
  Cluster 0: 17 partidas
  Cluster 1: 26 partidas
  Cluster 2: 24 partidas
  Cluster 3: 30 partidas
  Cluster 4: 28 partidas
  Cluster 5: 7 partidas
Algoritmo: gmm
  Cluster 0: 44 partidas
  Cluster 1: 22 partidas
  Cluster 2: 24 partidas
  Cluster 3: 17 partidas
  Cluster 4: 16 partidas
  Cluster 5: 9 partidas
Algoritmo: optics
  Cluster -1: 97 partidas
  Cluster 0: 24 partidas
  Cluster 1: 11 partidas
==================================================
Processing 195 matches from The International 2022
Autoencoder name: ti_2022_2_autoencoder
No description has been provided for this image
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [-1  0  1  2  3]
Algoritmo: kmeans
  Cluster 0: 38 partidas
  Cluster 1: 60 partidas
  Cluster 2: 36 partidas
  Cluster 3: 14 partidas
  Cluster 4: 25 partidas
  Cluster 5: 22 partidas
Algoritmo: agglomerative
  Cluster 0: 28 partidas
  Cluster 1: 40 partidas
  Cluster 2: 59 partidas
  Cluster 3: 35 partidas
  Cluster 4: 18 partidas
  Cluster 5: 15 partidas
Algoritmo: gmm
  Cluster 0: 32 partidas
  Cluster 1: 83 partidas
  Cluster 2: 40 partidas
  Cluster 3: 13 partidas
  Cluster 4: 15 partidas
  Cluster 5: 12 partidas
Algoritmo: optics
  Cluster -1: 124 partidas
  Cluster 0: 18 partidas
  Cluster 1: 14 partidas
  Cluster 2: 15 partidas
  Cluster 3: 24 partidas
==================================================
Processing 758 matches from The International 2021
Autoencoder name: ti_2022_2_autoencoder
No description has been provided for this image
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [-1  0  1  2]
Algoritmo: kmeans
  Cluster 0: 100 partidas
  Cluster 1: 206 partidas
  Cluster 2: 106 partidas
  Cluster 3: 128 partidas
  Cluster 4: 90 partidas
  Cluster 5: 128 partidas
Algoritmo: agglomerative
  Cluster 0: 154 partidas
  Cluster 1: 140 partidas
  Cluster 2: 146 partidas
  Cluster 3: 156 partidas
  Cluster 4: 102 partidas
  Cluster 5: 60 partidas
Algoritmo: gmm
  Cluster 0: 46 partidas
  Cluster 1: 300 partidas
  Cluster 2: 78 partidas
  Cluster 3: 154 partidas
  Cluster 4: 58 partidas
  Cluster 5: 122 partidas
Algoritmo: optics
  Cluster -1: 609 partidas
  Cluster 0: 45 partidas
  Cluster 1: 42 partidas
  Cluster 2: 62 partidas
==================================================
Processing 97 matches from The International 2024
Autoencoder name: ti_2021_2_autoencoder
No description has been provided for this image
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [-1  0  1]
Algoritmo: kmeans
  Cluster 0: 14 partidas
  Cluster 1: 11 partidas
  Cluster 2: 8 partidas
  Cluster 3: 21 partidas
  Cluster 4: 25 partidas
  Cluster 5: 18 partidas
Algoritmo: agglomerative
  Cluster 0: 21 partidas
  Cluster 1: 25 partidas
  Cluster 2: 9 partidas
  Cluster 3: 22 partidas
  Cluster 4: 13 partidas
  Cluster 5: 7 partidas
Algoritmo: gmm
  Cluster 0: 7 partidas
  Cluster 1: 11 partidas
  Cluster 2: 5 partidas
  Cluster 3: 24 partidas
  Cluster 4: 36 partidas
  Cluster 5: 14 partidas
Algoritmo: optics
  Cluster -1: 57 partidas
  Cluster 0: 25 partidas
  Cluster 1: 15 partidas
==================================================
Processing 132 matches from The International 2023
Autoencoder name: ti_2021_2_autoencoder
No description has been provided for this image
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [-1  0  1]
Algoritmo: kmeans
  Cluster 0: 17 partidas
  Cluster 1: 40 partidas
  Cluster 2: 25 partidas
  Cluster 3: 14 partidas
  Cluster 4: 23 partidas
  Cluster 5: 13 partidas
Algoritmo: agglomerative
  Cluster 0: 21 partidas
  Cluster 1: 28 partidas
  Cluster 2: 19 partidas
  Cluster 3: 16 partidas
  Cluster 4: 33 partidas
  Cluster 5: 15 partidas
Algoritmo: gmm
  Cluster 0: 13 partidas
  Cluster 1: 40 partidas
  Cluster 2: 29 partidas
  Cluster 3: 11 partidas
  Cluster 4: 25 partidas
  Cluster 5: 14 partidas
Algoritmo: optics
  Cluster -1: 88 partidas
  Cluster 0: 31 partidas
  Cluster 1: 13 partidas
==================================================
Processing 195 matches from The International 2022
Autoencoder name: ti_2021_2_autoencoder
No description has been provided for this image
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [-1  0  1]
Algoritmo: kmeans
  Cluster 0: 32 partidas
  Cluster 1: 47 partidas
  Cluster 2: 27 partidas
  Cluster 3: 9 partidas
  Cluster 4: 60 partidas
  Cluster 5: 20 partidas
Algoritmo: agglomerative
  Cluster 0: 37 partidas
  Cluster 1: 45 partidas
  Cluster 2: 27 partidas
  Cluster 3: 49 partidas
  Cluster 4: 21 partidas
  Cluster 5: 16 partidas
Algoritmo: gmm
  Cluster 0: 29 partidas
  Cluster 1: 43 partidas
  Cluster 2: 26 partidas
  Cluster 3: 8 partidas
  Cluster 4: 77 partidas
  Cluster 5: 12 partidas
Algoritmo: optics
  Cluster -1: 173 partidas
  Cluster 0: 11 partidas
  Cluster 1: 11 partidas
==================================================
Processing 758 matches from The International 2021
Autoencoder name: ti_2021_2_autoencoder
No description has been provided for this image
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [-1  0  1  2  3]
Algoritmo: kmeans
  Cluster 0: 110 partidas
  Cluster 1: 220 partidas
  Cluster 2: 122 partidas
  Cluster 3: 110 partidas
  Cluster 4: 128 partidas
  Cluster 5: 68 partidas
Algoritmo: agglomerative
  Cluster 0: 112 partidas
  Cluster 1: 210 partidas
  Cluster 2: 244 partidas
  Cluster 3: 68 partidas
  Cluster 4: 40 partidas
  Cluster 5: 84 partidas
Algoritmo: gmm
  Cluster 0: 78 partidas
  Cluster 1: 314 partidas
  Cluster 2: 124 partidas
  Cluster 3: 70 partidas
  Cluster 4: 132 partidas
  Cluster 5: 40 partidas
Algoritmo: optics
  Cluster -1: 565 partidas
  Cluster 0: 44 partidas
  Cluster 1: 42 partidas
  Cluster 2: 40 partidas
  Cluster 3: 67 partidas
==================================================
Cluster de datasets usando 3 dimensões latentes:
Loading pre-trained model for TI 2024
Loading pre-trained model for TI 2023
Loading pre-trained model for TI 2022
Loading pre-trained model for TI 2021
Processing 97 matches from The International 2024
Autoencoder name: ti_2024_3_autoencoder
No description has been provided for this image
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [-1  0  1]
Algoritmo: kmeans
  Cluster 0: 24 partidas
  Cluster 1: 17 partidas
  Cluster 2: 19 partidas
  Cluster 3: 14 partidas
  Cluster 4: 6 partidas
  Cluster 5: 17 partidas
Algoritmo: agglomerative
  Cluster 0: 27 partidas
  Cluster 1: 20 partidas
  Cluster 2: 19 partidas
  Cluster 3: 13 partidas
  Cluster 4: 8 partidas
  Cluster 5: 10 partidas
Algoritmo: gmm
  Cluster 0: 27 partidas
  Cluster 1: 15 partidas
  Cluster 2: 17 partidas
  Cluster 3: 13 partidas
  Cluster 4: 4 partidas
  Cluster 5: 21 partidas
Algoritmo: optics
  Cluster -1: 70 partidas
  Cluster 0: 11 partidas
  Cluster 1: 16 partidas
==================================================
Processing 132 matches from The International 2023
Autoencoder name: ti_2024_3_autoencoder
No description has been provided for this image
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [-1  0]
Algoritmo: kmeans
  Cluster 0: 9 partidas
  Cluster 1: 24 partidas
  Cluster 2: 7 partidas
  Cluster 3: 36 partidas
  Cluster 4: 22 partidas
  Cluster 5: 34 partidas
Algoritmo: agglomerative
  Cluster 0: 29 partidas
  Cluster 1: 40 partidas
  Cluster 2: 24 partidas
  Cluster 3: 22 partidas
  Cluster 4: 9 partidas
  Cluster 5: 8 partidas
Algoritmo: gmm
  Cluster 0: 8 partidas
  Cluster 1: 11 partidas
  Cluster 2: 5 partidas
  Cluster 3: 65 partidas
  Cluster 4: 5 partidas
  Cluster 5: 38 partidas
Algoritmo: optics
  Cluster -1: 14 partidas
  Cluster 0: 118 partidas
==================================================
Processing 195 matches from The International 2022
Autoencoder name: ti_2024_3_autoencoder
No description has been provided for this image
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [-1  0  1]
Algoritmo: kmeans
  Cluster 0: 19 partidas
  Cluster 1: 21 partidas
  Cluster 2: 36 partidas
  Cluster 3: 40 partidas
  Cluster 4: 47 partidas
  Cluster 5: 32 partidas
Algoritmo: agglomerative
  Cluster 0: 45 partidas
  Cluster 1: 32 partidas
  Cluster 2: 39 partidas
  Cluster 3: 22 partidas
  Cluster 4: 44 partidas
  Cluster 5: 13 partidas
Algoritmo: gmm
  Cluster 0: 13 partidas
  Cluster 1: 17 partidas
  Cluster 2: 39 partidas
  Cluster 3: 40 partidas
  Cluster 4: 55 partidas
  Cluster 5: 31 partidas
Algoritmo: optics
  Cluster -1: 170 partidas
  Cluster 0: 13 partidas
  Cluster 1: 12 partidas
==================================================
Processing 758 matches from The International 2021
Autoencoder name: ti_2024_3_autoencoder
No description has been provided for this image
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [0]
Algoritmo: kmeans
  Cluster 0: 106 partidas
  Cluster 1: 168 partidas
  Cluster 2: 114 partidas
  Cluster 3: 160 partidas
  Cluster 4: 118 partidas
  Cluster 5: 92 partidas
Algoritmo: agglomerative
  Cluster 0: 164 partidas
  Cluster 1: 132 partidas
  Cluster 2: 94 partidas
  Cluster 3: 140 partidas
  Cluster 4: 112 partidas
  Cluster 5: 116 partidas
Algoritmo: gmm
  Cluster 0: 114 partidas
  Cluster 1: 184 partidas
  Cluster 2: 74 partidas
  Cluster 3: 238 partidas
  Cluster 4: 90 partidas
  Cluster 5: 58 partidas
Algoritmo: optics
  Cluster 0: 758 partidas
==================================================
Processing 97 matches from The International 2024
Autoencoder name: ti_2023_3_autoencoder
No description has been provided for this image
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [-1  0]
Algoritmo: kmeans
  Cluster 0: 25 partidas
  Cluster 1: 13 partidas
  Cluster 2: 21 partidas
  Cluster 3: 9 partidas
  Cluster 4: 21 partidas
  Cluster 5: 8 partidas
Algoritmo: agglomerative
  Cluster 0: 31 partidas
  Cluster 1: 19 partidas
  Cluster 2: 9 partidas
  Cluster 3: 14 partidas
  Cluster 4: 5 partidas
  Cluster 5: 19 partidas
Algoritmo: gmm
  Cluster 0: 8 partidas
  Cluster 1: 16 partidas
  Cluster 2: 24 partidas
  Cluster 3: 9 partidas
  Cluster 4: 23 partidas
  Cluster 5: 17 partidas
Algoritmo: optics
  Cluster -1: 17 partidas
  Cluster 0: 80 partidas
==================================================
Processing 132 matches from The International 2023
Autoencoder name: ti_2023_3_autoencoder
No description has been provided for this image
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [-1  0  1]
Algoritmo: kmeans
  Cluster 0: 19 partidas
  Cluster 1: 23 partidas
  Cluster 2: 38 partidas
  Cluster 3: 24 partidas
  Cluster 4: 15 partidas
  Cluster 5: 13 partidas
Algoritmo: agglomerative
  Cluster 0: 33 partidas
  Cluster 1: 30 partidas
  Cluster 2: 18 partidas
  Cluster 3: 24 partidas
  Cluster 4: 12 partidas
  Cluster 5: 15 partidas
Algoritmo: gmm
  Cluster 0: 17 partidas
  Cluster 1: 22 partidas
  Cluster 2: 35 partidas
  Cluster 3: 30 partidas
  Cluster 4: 14 partidas
  Cluster 5: 14 partidas
Algoritmo: optics
  Cluster -1: 112 partidas
  Cluster 0: 13 partidas
  Cluster 1: 7 partidas
==================================================
Processing 195 matches from The International 2022
Autoencoder name: ti_2023_3_autoencoder
No description has been provided for this image
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [-1  0]
Algoritmo: kmeans
  Cluster 0: 35 partidas
  Cluster 1: 26 partidas
  Cluster 2: 51 partidas
  Cluster 3: 31 partidas
  Cluster 4: 32 partidas
  Cluster 5: 20 partidas
Algoritmo: agglomerative
  Cluster 0: 44 partidas
  Cluster 1: 54 partidas
  Cluster 2: 29 partidas
  Cluster 3: 27 partidas
  Cluster 4: 25 partidas
  Cluster 5: 16 partidas
Algoritmo: gmm
  Cluster 0: 35 partidas
  Cluster 1: 22 partidas
  Cluster 2: 60 partidas
  Cluster 3: 25 partidas
  Cluster 4: 32 partidas
  Cluster 5: 21 partidas
Algoritmo: optics
  Cluster -1: 186 partidas
  Cluster 0: 9 partidas
==================================================
Processing 758 matches from The International 2021
Autoencoder name: ti_2023_3_autoencoder
No description has been provided for this image
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [0]
Algoritmo: kmeans
  Cluster 0: 70 partidas
  Cluster 1: 204 partidas
  Cluster 2: 214 partidas
  Cluster 3: 68 partidas
  Cluster 4: 94 partidas
  Cluster 5: 108 partidas
Algoritmo: agglomerative
  Cluster 0: 92 partidas
  Cluster 1: 192 partidas
  Cluster 2: 82 partidas
  Cluster 3: 114 partidas
  Cluster 4: 148 partidas
  Cluster 5: 130 partidas
Algoritmo: gmm
  Cluster 0: 56 partidas
  Cluster 1: 246 partidas
  Cluster 2: 272 partidas
  Cluster 3: 52 partidas
  Cluster 4: 52 partidas
  Cluster 5: 80 partidas
Algoritmo: optics
  Cluster 0: 758 partidas
==================================================
Processing 97 matches from The International 2024
Autoencoder name: ti_2022_3_autoencoder
No description has been provided for this image
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [-1  0]
Algoritmo: kmeans
  Cluster 0: 18 partidas
  Cluster 1: 26 partidas
  Cluster 2: 22 partidas
  Cluster 3: 16 partidas
  Cluster 4: 12 partidas
  Cluster 5: 3 partidas
Algoritmo: agglomerative
  Cluster 0: 26 partidas
  Cluster 1: 9 partidas
  Cluster 2: 25 partidas
  Cluster 3: 18 partidas
  Cluster 4: 14 partidas
  Cluster 5: 5 partidas
Algoritmo: gmm
  Cluster 0: 17 partidas
  Cluster 1: 12 partidas
  Cluster 2: 36 partidas
  Cluster 3: 21 partidas
  Cluster 4: 7 partidas
  Cluster 5: 4 partidas
Algoritmo: optics
  Cluster -1: 88 partidas
  Cluster 0: 9 partidas
==================================================
Processing 132 matches from The International 2023
Autoencoder name: ti_2022_3_autoencoder
No description has been provided for this image
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [-1  0]
Algoritmo: kmeans
  Cluster 0: 24 partidas
  Cluster 1: 14 partidas
  Cluster 2: 25 partidas
  Cluster 3: 30 partidas
  Cluster 4: 26 partidas
  Cluster 5: 13 partidas
Algoritmo: agglomerative
  Cluster 0: 43 partidas
  Cluster 1: 15 partidas
  Cluster 2: 31 partidas
  Cluster 3: 12 partidas
  Cluster 4: 13 partidas
  Cluster 5: 18 partidas
Algoritmo: gmm
  Cluster 0: 21 partidas
  Cluster 1: 12 partidas
  Cluster 2: 21 partidas
  Cluster 3: 38 partidas
  Cluster 4: 28 partidas
  Cluster 5: 12 partidas
Algoritmo: optics
  Cluster -1: 96 partidas
  Cluster 0: 36 partidas
==================================================
Processing 195 matches from The International 2022
Autoencoder name: ti_2022_3_autoencoder
No description has been provided for this image
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [-1  0  1]
Algoritmo: kmeans
  Cluster 0: 44 partidas
  Cluster 1: 47 partidas
  Cluster 2: 24 partidas
  Cluster 3: 17 partidas
  Cluster 4: 24 partidas
  Cluster 5: 39 partidas
Algoritmo: agglomerative
  Cluster 0: 53 partidas
  Cluster 1: 51 partidas
  Cluster 2: 48 partidas
  Cluster 3: 24 partidas
  Cluster 4: 12 partidas
  Cluster 5: 7 partidas
Algoritmo: gmm
  Cluster 0: 47 partidas
  Cluster 1: 47 partidas
  Cluster 2: 21 partidas
  Cluster 3: 18 partidas
  Cluster 4: 22 partidas
  Cluster 5: 40 partidas
Algoritmo: optics
  Cluster -1: 173 partidas
  Cluster 0: 11 partidas
  Cluster 1: 11 partidas
==================================================
Processing 758 matches from The International 2021
Autoencoder name: ti_2022_3_autoencoder
No description has been provided for this image
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [0]
Algoritmo: kmeans
  Cluster 0: 80 partidas
  Cluster 1: 180 partidas
  Cluster 2: 148 partidas
  Cluster 3: 136 partidas
  Cluster 4: 152 partidas
  Cluster 5: 62 partidas
Algoritmo: agglomerative
  Cluster 0: 178 partidas
  Cluster 1: 96 partidas
  Cluster 2: 110 partidas
  Cluster 3: 146 partidas
  Cluster 4: 156 partidas
  Cluster 5: 72 partidas
Algoritmo: gmm
  Cluster 0: 12 partidas
  Cluster 1: 232 partidas
  Cluster 2: 190 partidas
  Cluster 3: 144 partidas
  Cluster 4: 156 partidas
  Cluster 5: 24 partidas
Algoritmo: optics
  Cluster 0: 758 partidas
==================================================
Processing 97 matches from The International 2024
Autoencoder name: ti_2021_3_autoencoder
No description has been provided for this image
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [0]
Algoritmo: kmeans
  Cluster 0: 23 partidas
  Cluster 1: 21 partidas
  Cluster 2: 15 partidas
  Cluster 3: 14 partidas
  Cluster 4: 11 partidas
  Cluster 5: 13 partidas
Algoritmo: agglomerative
  Cluster 0: 22 partidas
  Cluster 1: 20 partidas
  Cluster 2: 16 partidas
  Cluster 3: 8 partidas
  Cluster 4: 14 partidas
  Cluster 5: 17 partidas
Algoritmo: gmm
  Cluster 0: 28 partidas
  Cluster 1: 14 partidas
  Cluster 2: 26 partidas
  Cluster 3: 10 partidas
  Cluster 4: 7 partidas
  Cluster 5: 12 partidas
Algoritmo: optics
  Cluster 0: 97 partidas
==================================================
Processing 132 matches from The International 2023
Autoencoder name: ti_2021_3_autoencoder
No description has been provided for this image
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [-1  0]
Algoritmo: kmeans
  Cluster 0: 30 partidas
  Cluster 1: 20 partidas
  Cluster 2: 18 partidas
  Cluster 3: 33 partidas
  Cluster 4: 21 partidas
  Cluster 5: 10 partidas
Algoritmo: agglomerative
  Cluster 0: 34 partidas
  Cluster 1: 15 partidas
  Cluster 2: 26 partidas
  Cluster 3: 23 partidas
  Cluster 4: 18 partidas
  Cluster 5: 16 partidas
Algoritmo: gmm
  Cluster 0: 31 partidas
  Cluster 1: 26 partidas
  Cluster 2: 12 partidas
  Cluster 3: 30 partidas
  Cluster 4: 26 partidas
  Cluster 5: 7 partidas
Algoritmo: optics
  Cluster -1: 123 partidas
  Cluster 0: 9 partidas
==================================================
Processing 195 matches from The International 2022
Autoencoder name: ti_2021_3_autoencoder
No description has been provided for this image
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [-1  0]
Algoritmo: kmeans
  Cluster 0: 22 partidas
  Cluster 1: 47 partidas
  Cluster 2: 24 partidas
  Cluster 3: 27 partidas
  Cluster 4: 28 partidas
  Cluster 5: 47 partidas
Algoritmo: agglomerative
  Cluster 0: 43 partidas
  Cluster 1: 42 partidas
  Cluster 2: 51 partidas
  Cluster 3: 19 partidas
  Cluster 4: 15 partidas
  Cluster 5: 25 partidas
Algoritmo: gmm
  Cluster 0: 6 partidas
  Cluster 1: 61 partidas
  Cluster 2: 11 partidas
  Cluster 3: 26 partidas
  Cluster 4: 29 partidas
  Cluster 5: 62 partidas
Algoritmo: optics
  Cluster -1: 179 partidas
  Cluster 0: 16 partidas
==================================================
Processing 758 matches from The International 2021
Autoencoder name: ti_2021_3_autoencoder
No description has been provided for this image
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [0]
Algoritmo: kmeans
  Cluster 0: 106 partidas
  Cluster 1: 148 partidas
  Cluster 2: 102 partidas
  Cluster 3: 148 partidas
  Cluster 4: 122 partidas
  Cluster 5: 132 partidas
Algoritmo: agglomerative
  Cluster 0: 142 partidas
  Cluster 1: 166 partidas
  Cluster 2: 190 partidas
  Cluster 3: 84 partidas
  Cluster 4: 108 partidas
  Cluster 5: 68 partidas
Algoritmo: gmm
  Cluster 0: 60 partidas
  Cluster 1: 162 partidas
  Cluster 2: 88 partidas
  Cluster 3: 182 partidas
  Cluster 4: 112 partidas
  Cluster 5: 154 partidas
Algoritmo: optics
  Cluster 0: 758 partidas
==================================================
Cluster de datasets usando 4 dimensões latentes:
Loading pre-trained model for TI 2024
Loading pre-trained model for TI 2023
Loading pre-trained model for TI 2022
Loading pre-trained model for TI 2021
Processing 97 matches from The International 2024
Autoencoder name: ti_2024_4_autoencoder
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [-1  0]
Algoritmo: kmeans
  Cluster 0: 20 partidas
  Cluster 1: 17 partidas
  Cluster 2: 14 partidas
  Cluster 3: 22 partidas
  Cluster 4: 19 partidas
  Cluster 5: 5 partidas
Algoritmo: agglomerative
  Cluster 0: 33 partidas
  Cluster 1: 18 partidas
  Cluster 2: 22 partidas
  Cluster 3: 10 partidas
  Cluster 4: 9 partidas
  Cluster 5: 5 partidas
Algoritmo: gmm
  Cluster 0: 25 partidas
  Cluster 1: 27 partidas
  Cluster 2: 13 partidas
  Cluster 3: 14 partidas
  Cluster 4: 12 partidas
  Cluster 5: 6 partidas
Algoritmo: optics
  Cluster -1: 28 partidas
  Cluster 0: 69 partidas
==================================================
Processing 132 matches from The International 2023
Autoencoder name: ti_2024_4_autoencoder
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [-1  0]
Algoritmo: kmeans
  Cluster 0: 27 partidas
  Cluster 1: 24 partidas
  Cluster 2: 10 partidas
  Cluster 3: 21 partidas
  Cluster 4: 27 partidas
  Cluster 5: 23 partidas
Algoritmo: agglomerative
  Cluster 0: 44 partidas
  Cluster 1: 31 partidas
  Cluster 2: 14 partidas
  Cluster 3: 14 partidas
  Cluster 4: 14 partidas
  Cluster 5: 15 partidas
Algoritmo: gmm
  Cluster 0: 43 partidas
  Cluster 1: 31 partidas
  Cluster 2: 10 partidas
  Cluster 3: 9 partidas
  Cluster 4: 18 partidas
  Cluster 5: 21 partidas
Algoritmo: optics
  Cluster -1: 125 partidas
  Cluster 0: 7 partidas
==================================================
Processing 195 matches from The International 2022
Autoencoder name: ti_2024_4_autoencoder
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [0]
Algoritmo: kmeans
  Cluster 0: 35 partidas
  Cluster 1: 24 partidas
  Cluster 2: 22 partidas
  Cluster 3: 38 partidas
  Cluster 4: 30 partidas
  Cluster 5: 46 partidas
Algoritmo: agglomerative
  Cluster 0: 42 partidas
  Cluster 1: 48 partidas
  Cluster 2: 46 partidas
  Cluster 3: 12 partidas
  Cluster 4: 10 partidas
  Cluster 5: 37 partidas
Algoritmo: gmm
  Cluster 0: 34 partidas
  Cluster 1: 14 partidas
  Cluster 2: 20 partidas
  Cluster 3: 43 partidas
  Cluster 4: 37 partidas
  Cluster 5: 47 partidas
Algoritmo: optics
  Cluster 0: 195 partidas
==================================================
Processing 758 matches from The International 2021
Autoencoder name: ti_2024_4_autoencoder
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [-1  0]
Algoritmo: kmeans
  Cluster 0: 80 partidas
  Cluster 1: 136 partidas
  Cluster 2: 134 partidas
  Cluster 3: 88 partidas
  Cluster 4: 148 partidas
  Cluster 5: 172 partidas
Algoritmo: agglomerative
  Cluster 0: 166 partidas
  Cluster 1: 146 partidas
  Cluster 2: 160 partidas
  Cluster 3: 148 partidas
  Cluster 4: 114 partidas
  Cluster 5: 24 partidas
Algoritmo: gmm
  Cluster 0: 60 partidas
  Cluster 1: 132 partidas
  Cluster 2: 204 partidas
  Cluster 3: 52 partidas
  Cluster 4: 134 partidas
  Cluster 5: 176 partidas
Algoritmo: optics
  Cluster -1: 710 partidas
  Cluster 0: 48 partidas
==================================================
Processing 97 matches from The International 2024
Autoencoder name: ti_2023_4_autoencoder
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [-1  0]
Algoritmo: kmeans
  Cluster 0: 9 partidas
  Cluster 1: 28 partidas
  Cluster 2: 12 partidas
  Cluster 3: 30 partidas
  Cluster 4: 11 partidas
  Cluster 5: 7 partidas
Algoritmo: agglomerative
  Cluster 0: 29 partidas
  Cluster 1: 17 partidas
  Cluster 2: 22 partidas
  Cluster 3: 11 partidas
  Cluster 4: 14 partidas
  Cluster 5: 4 partidas
Algoritmo: gmm
  Cluster 0: 8 partidas
  Cluster 1: 24 partidas
  Cluster 2: 20 partidas
  Cluster 3: 24 partidas
  Cluster 4: 16 partidas
  Cluster 5: 5 partidas
Algoritmo: optics
  Cluster -1: 87 partidas
  Cluster 0: 10 partidas
==================================================
Processing 132 matches from The International 2023
Autoencoder name: ti_2023_4_autoencoder
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [0]
Algoritmo: kmeans
  Cluster 0: 15 partidas
  Cluster 1: 15 partidas
  Cluster 2: 20 partidas
  Cluster 3: 24 partidas
  Cluster 4: 23 partidas
  Cluster 5: 35 partidas
Algoritmo: agglomerative
  Cluster 0: 42 partidas
  Cluster 1: 29 partidas
  Cluster 2: 20 partidas
  Cluster 3: 12 partidas
  Cluster 4: 20 partidas
  Cluster 5: 9 partidas
Algoritmo: gmm
  Cluster 0: 17 partidas
  Cluster 1: 13 partidas
  Cluster 2: 21 partidas
  Cluster 3: 27 partidas
  Cluster 4: 25 partidas
  Cluster 5: 29 partidas
Algoritmo: optics
  Cluster 0: 132 partidas
==================================================
Processing 195 matches from The International 2022
Autoencoder name: ti_2023_4_autoencoder
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [0]
Algoritmo: kmeans
  Cluster 0: 31 partidas
  Cluster 1: 19 partidas
  Cluster 2: 54 partidas
  Cluster 3: 30 partidas
  Cluster 4: 21 partidas
  Cluster 5: 40 partidas
Algoritmo: agglomerative
  Cluster 0: 25 partidas
  Cluster 1: 61 partidas
  Cluster 2: 19 partidas
  Cluster 3: 34 partidas
  Cluster 4: 27 partidas
  Cluster 5: 29 partidas
Algoritmo: gmm
  Cluster 0: 8 partidas
  Cluster 1: 14 partidas
  Cluster 2: 43 partidas
  Cluster 3: 50 partidas
  Cluster 4: 26 partidas
  Cluster 5: 54 partidas
Algoritmo: optics
  Cluster 0: 195 partidas
==================================================
Processing 758 matches from The International 2021
Autoencoder name: ti_2023_4_autoencoder
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [0]
Algoritmo: kmeans
  Cluster 0: 136 partidas
  Cluster 1: 90 partidas
  Cluster 2: 148 partidas
  Cluster 3: 106 partidas
  Cluster 4: 170 partidas
  Cluster 5: 108 partidas
Algoritmo: agglomerative
  Cluster 0: 156 partidas
  Cluster 1: 90 partidas
  Cluster 2: 176 partidas
  Cluster 3: 108 partidas
  Cluster 4: 94 partidas
  Cluster 5: 134 partidas
Algoritmo: gmm
  Cluster 0: 128 partidas
  Cluster 1: 102 partidas
  Cluster 2: 118 partidas
  Cluster 3: 60 partidas
  Cluster 4: 240 partidas
  Cluster 5: 110 partidas
Algoritmo: optics
  Cluster 0: 758 partidas
==================================================
Processing 97 matches from The International 2024
Autoencoder name: ti_2022_4_autoencoder
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [-1  0]
Algoritmo: kmeans
  Cluster 0: 19 partidas
  Cluster 1: 13 partidas
  Cluster 2: 25 partidas
  Cluster 3: 13 partidas
  Cluster 4: 15 partidas
  Cluster 5: 12 partidas
Algoritmo: agglomerative
  Cluster 0: 12 partidas
  Cluster 1: 20 partidas
  Cluster 2: 19 partidas
  Cluster 3: 21 partidas
  Cluster 4: 11 partidas
  Cluster 5: 14 partidas
Algoritmo: gmm
  Cluster 0: 15 partidas
  Cluster 1: 11 partidas
  Cluster 2: 32 partidas
  Cluster 3: 9 partidas
  Cluster 4: 16 partidas
  Cluster 5: 14 partidas
Algoritmo: optics
  Cluster -1: 75 partidas
  Cluster 0: 22 partidas
==================================================
Processing 132 matches from The International 2023
Autoencoder name: ti_2022_4_autoencoder
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [-1  0]
Algoritmo: kmeans
  Cluster 0: 23 partidas
  Cluster 1: 36 partidas
  Cluster 2: 10 partidas
  Cluster 3: 25 partidas
  Cluster 4: 24 partidas
  Cluster 5: 14 partidas
Algoritmo: agglomerative
  Cluster 0: 26 partidas
  Cluster 1: 33 partidas
  Cluster 2: 29 partidas
  Cluster 3: 7 partidas
  Cluster 4: 12 partidas
  Cluster 5: 25 partidas
Algoritmo: gmm
  Cluster 0: 29 partidas
  Cluster 1: 34 partidas
  Cluster 2: 12 partidas
  Cluster 3: 25 partidas
  Cluster 4: 22 partidas
  Cluster 5: 10 partidas
Algoritmo: optics
  Cluster -1: 116 partidas
  Cluster 0: 16 partidas
==================================================
Processing 195 matches from The International 2022
Autoencoder name: ti_2022_4_autoencoder
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [-1  0  1]
Algoritmo: kmeans
  Cluster 0: 10 partidas
  Cluster 1: 25 partidas
  Cluster 2: 38 partidas
  Cluster 3: 39 partidas
  Cluster 4: 49 partidas
  Cluster 5: 34 partidas
Algoritmo: agglomerative
  Cluster 0: 55 partidas
  Cluster 1: 49 partidas
  Cluster 2: 41 partidas
  Cluster 3: 19 partidas
  Cluster 4: 17 partidas
  Cluster 5: 14 partidas
Algoritmo: gmm
  Cluster 0: 15 partidas
  Cluster 1: 12 partidas
  Cluster 2: 70 partidas
  Cluster 3: 13 partidas
  Cluster 4: 59 partidas
  Cluster 5: 26 partidas
Algoritmo: optics
  Cluster -1: 171 partidas
  Cluster 0: 15 partidas
  Cluster 1: 9 partidas
==================================================
Processing 758 matches from The International 2021
Autoencoder name: ti_2022_4_autoencoder
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [0]
Algoritmo: kmeans
  Cluster 0: 156 partidas
  Cluster 1: 156 partidas
  Cluster 2: 20 partidas
  Cluster 3: 160 partidas
  Cluster 4: 136 partidas
  Cluster 5: 130 partidas
Algoritmo: agglomerative
  Cluster 0: 136 partidas
  Cluster 1: 186 partidas
  Cluster 2: 134 partidas
  Cluster 3: 70 partidas
  Cluster 4: 128 partidas
  Cluster 5: 104 partidas
Algoritmo: gmm
  Cluster 0: 162 partidas
  Cluster 1: 142 partidas
  Cluster 2: 18 partidas
  Cluster 3: 138 partidas
  Cluster 4: 160 partidas
  Cluster 5: 138 partidas
Algoritmo: optics
  Cluster 0: 758 partidas
==================================================
Processing 97 matches from The International 2024
Autoencoder name: ti_2021_4_autoencoder
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [-1  0]
Algoritmo: kmeans
  Cluster 0: 24 partidas
  Cluster 1: 18 partidas
  Cluster 2: 19 partidas
  Cluster 3: 3 partidas
  Cluster 4: 17 partidas
  Cluster 5: 16 partidas
Algoritmo: agglomerative
  Cluster 0: 20 partidas
  Cluster 1: 10 partidas
  Cluster 2: 23 partidas
  Cluster 3: 25 partidas
  Cluster 4: 11 partidas
  Cluster 5: 8 partidas
Algoritmo: gmm
  Cluster 0: 31 partidas
  Cluster 1: 13 partidas
  Cluster 2: 19 partidas
  Cluster 3: 3 partidas
  Cluster 4: 25 partidas
  Cluster 5: 6 partidas
Algoritmo: optics
  Cluster -1: 91 partidas
  Cluster 0: 6 partidas
==================================================
Processing 132 matches from The International 2023
Autoencoder name: ti_2021_4_autoencoder
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [-1  0]
Algoritmo: kmeans
  Cluster 0: 19 partidas
  Cluster 1: 14 partidas
  Cluster 2: 34 partidas
  Cluster 3: 23 partidas
  Cluster 4: 17 partidas
  Cluster 5: 25 partidas
Algoritmo: agglomerative
  Cluster 0: 44 partidas
  Cluster 1: 18 partidas
  Cluster 2: 10 partidas
  Cluster 3: 17 partidas
  Cluster 4: 23 partidas
  Cluster 5: 20 partidas
Algoritmo: gmm
  Cluster 0: 16 partidas
  Cluster 1: 11 partidas
  Cluster 2: 45 partidas
  Cluster 3: 17 partidas
  Cluster 4: 19 partidas
  Cluster 5: 24 partidas
Algoritmo: optics
  Cluster -1: 116 partidas
  Cluster 0: 16 partidas
==================================================
Processing 195 matches from The International 2022
Autoencoder name: ti_2021_4_autoencoder
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [0]
Algoritmo: kmeans
  Cluster 0: 28 partidas
  Cluster 1: 38 partidas
  Cluster 2: 29 partidas
  Cluster 3: 35 partidas
  Cluster 4: 26 partidas
  Cluster 5: 39 partidas
Algoritmo: agglomerative
  Cluster 0: 62 partidas
  Cluster 1: 37 partidas
  Cluster 2: 24 partidas
  Cluster 3: 27 partidas
  Cluster 4: 28 partidas
  Cluster 5: 17 partidas
Algoritmo: gmm
  Cluster 0: 15 partidas
  Cluster 1: 42 partidas
  Cluster 2: 45 partidas
  Cluster 3: 9 partidas
  Cluster 4: 41 partidas
  Cluster 5: 43 partidas
Algoritmo: optics
  Cluster 0: 195 partidas
==================================================
Processing 758 matches from The International 2021
Autoencoder name: ti_2021_4_autoencoder
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [-1  0  1]
Algoritmo: kmeans
  Cluster 0: 140 partidas
  Cluster 1: 108 partidas
  Cluster 2: 136 partidas
  Cluster 3: 106 partidas
  Cluster 4: 172 partidas
  Cluster 5: 96 partidas
Algoritmo: agglomerative
  Cluster 0: 236 partidas
  Cluster 1: 128 partidas
  Cluster 2: 152 partidas
  Cluster 3: 110 partidas
  Cluster 4: 78 partidas
  Cluster 5: 54 partidas
Algoritmo: gmm
  Cluster 0: 124 partidas
  Cluster 1: 76 partidas
  Cluster 2: 188 partidas
  Cluster 3: 94 partidas
  Cluster 4: 196 partidas
  Cluster 5: 80 partidas
Algoritmo: optics
  Cluster -1: 656 partidas
  Cluster 0: 60 partidas
  Cluster 1: 42 partidas
==================================================
Cluster de datasets usando 48 dimensões latentes:
Loading pre-trained model for TI 2024
Loading pre-trained model for TI 2023
Loading pre-trained model for TI 2022
Loading pre-trained model for TI 2021
Processing 97 matches from The International 2024
Autoencoder name: ti_2024_8_autoencoder
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [0]
Algoritmo: kmeans
  Cluster 0: 17 partidas
  Cluster 1: 22 partidas
  Cluster 2: 20 partidas
  Cluster 3: 20 partidas
  Cluster 4: 8 partidas
  Cluster 5: 10 partidas
Algoritmo: agglomerative
  Cluster 0: 24 partidas
  Cluster 1: 28 partidas
  Cluster 2: 14 partidas
  Cluster 3: 14 partidas
  Cluster 4: 8 partidas
  Cluster 5: 9 partidas
Algoritmo: gmm
  Cluster 0: 16 partidas
  Cluster 1: 22 partidas
  Cluster 2: 16 partidas
  Cluster 3: 24 partidas
  Cluster 4: 9 partidas
  Cluster 5: 10 partidas
Algoritmo: optics
  Cluster 0: 97 partidas
==================================================
Processing 132 matches from The International 2023
Autoencoder name: ti_2024_8_autoencoder
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [0]
Algoritmo: kmeans
  Cluster 0: 20 partidas
  Cluster 1: 21 partidas
  Cluster 2: 24 partidas
  Cluster 3: 14 partidas
  Cluster 4: 21 partidas
  Cluster 5: 32 partidas
Algoritmo: agglomerative
  Cluster 0: 36 partidas
  Cluster 1: 21 partidas
  Cluster 2: 17 partidas
  Cluster 3: 16 partidas
  Cluster 4: 34 partidas
  Cluster 5: 8 partidas
Algoritmo: gmm
  Cluster 0: 16 partidas
  Cluster 1: 23 partidas
  Cluster 2: 28 partidas
  Cluster 3: 11 partidas
  Cluster 4: 19 partidas
  Cluster 5: 35 partidas
Algoritmo: optics
  Cluster 0: 132 partidas
==================================================
Processing 195 matches from The International 2022
Autoencoder name: ti_2024_8_autoencoder
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [0]
Algoritmo: kmeans
  Cluster 0: 46 partidas
  Cluster 1: 35 partidas
  Cluster 2: 25 partidas
  Cluster 3: 35 partidas
  Cluster 4: 23 partidas
  Cluster 5: 31 partidas
Algoritmo: agglomerative
  Cluster 0: 63 partidas
  Cluster 1: 29 partidas
  Cluster 2: 34 partidas
  Cluster 3: 30 partidas
  Cluster 4: 19 partidas
  Cluster 5: 20 partidas
Algoritmo: gmm
  Cluster 0: 48 partidas
  Cluster 1: 45 partidas
  Cluster 2: 30 partidas
  Cluster 3: 35 partidas
  Cluster 4: 20 partidas
  Cluster 5: 17 partidas
Algoritmo: optics
  Cluster 0: 195 partidas
==================================================
Processing 758 matches from The International 2021
Autoencoder name: ti_2024_8_autoencoder
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [0]
Algoritmo: kmeans
  Cluster 0: 162 partidas
  Cluster 1: 118 partidas
  Cluster 2: 78 partidas
  Cluster 3: 116 partidas
  Cluster 4: 164 partidas
  Cluster 5: 120 partidas
Algoritmo: agglomerative
  Cluster 0: 186 partidas
  Cluster 1: 116 partidas
  Cluster 2: 178 partidas
  Cluster 3: 66 partidas
  Cluster 4: 92 partidas
  Cluster 5: 120 partidas
Algoritmo: gmm
  Cluster 0: 138 partidas
  Cluster 1: 128 partidas
  Cluster 2: 90 partidas
  Cluster 3: 100 partidas
  Cluster 4: 142 partidas
  Cluster 5: 160 partidas
Algoritmo: optics
  Cluster 0: 758 partidas
==================================================
Processing 97 matches from The International 2024
Autoencoder name: ti_2023_8_autoencoder
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [0]
Algoritmo: kmeans
  Cluster 0: 16 partidas
  Cluster 1: 17 partidas
  Cluster 2: 16 partidas
  Cluster 3: 23 partidas
  Cluster 4: 19 partidas
  Cluster 5: 6 partidas
Algoritmo: agglomerative
  Cluster 0: 15 partidas
  Cluster 1: 14 partidas
  Cluster 2: 15 partidas
  Cluster 3: 15 partidas
  Cluster 4: 31 partidas
  Cluster 5: 7 partidas
Algoritmo: gmm
  Cluster 0: 19 partidas
  Cluster 1: 14 partidas
  Cluster 2: 17 partidas
  Cluster 3: 23 partidas
  Cluster 4: 17 partidas
  Cluster 5: 7 partidas
Algoritmo: optics
  Cluster 0: 97 partidas
==================================================
Processing 132 matches from The International 2023
Autoencoder name: ti_2023_8_autoencoder
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [0]
Algoritmo: kmeans
  Cluster 0: 26 partidas
  Cluster 1: 11 partidas
  Cluster 2: 18 partidas
  Cluster 3: 34 partidas
  Cluster 4: 28 partidas
  Cluster 5: 15 partidas
Algoritmo: agglomerative
  Cluster 0: 18 partidas
  Cluster 1: 29 partidas
  Cluster 2: 16 partidas
  Cluster 3: 39 partidas
  Cluster 4: 14 partidas
  Cluster 5: 16 partidas
Algoritmo: gmm
  Cluster 0: 31 partidas
  Cluster 1: 8 partidas
  Cluster 2: 20 partidas
  Cluster 3: 25 partidas
  Cluster 4: 34 partidas
  Cluster 5: 14 partidas
Algoritmo: optics
  Cluster 0: 132 partidas
==================================================
Processing 195 matches from The International 2022
Autoencoder name: ti_2023_8_autoencoder
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [0]
Algoritmo: kmeans
  Cluster 0: 43 partidas
  Cluster 1: 27 partidas
  Cluster 2: 38 partidas
  Cluster 3: 23 partidas
  Cluster 4: 35 partidas
  Cluster 5: 29 partidas
Algoritmo: agglomerative
  Cluster 0: 47 partidas
  Cluster 1: 34 partidas
  Cluster 2: 42 partidas
  Cluster 3: 29 partidas
  Cluster 4: 18 partidas
  Cluster 5: 25 partidas
Algoritmo: gmm
  Cluster 0: 37 partidas
  Cluster 1: 26 partidas
  Cluster 2: 35 partidas
  Cluster 3: 25 partidas
  Cluster 4: 43 partidas
  Cluster 5: 29 partidas
Algoritmo: optics
  Cluster 0: 195 partidas
==================================================
Processing 758 matches from The International 2021
Autoencoder name: ti_2023_8_autoencoder
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [0]
Algoritmo: kmeans
  Cluster 0: 100 partidas
  Cluster 1: 140 partidas
  Cluster 2: 94 partidas
  Cluster 3: 112 partidas
  Cluster 4: 122 partidas
  Cluster 5: 190 partidas
Algoritmo: agglomerative
  Cluster 0: 160 partidas
  Cluster 1: 148 partidas
  Cluster 2: 172 partidas
  Cluster 3: 160 partidas
  Cluster 4: 60 partidas
  Cluster 5: 58 partidas
Algoritmo: gmm
  Cluster 0: 94 partidas
  Cluster 1: 84 partidas
  Cluster 2: 86 partidas
  Cluster 3: 100 partidas
  Cluster 4: 100 partidas
  Cluster 5: 294 partidas
Algoritmo: optics
  Cluster 0: 758 partidas
==================================================
Processing 97 matches from The International 2024
Autoencoder name: ti_2022_8_autoencoder
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [-1  0]
Algoritmo: kmeans
  Cluster 0: 25 partidas
  Cluster 1: 14 partidas
  Cluster 2: 15 partidas
  Cluster 3: 25 partidas
  Cluster 4: 8 partidas
  Cluster 5: 10 partidas
Algoritmo: agglomerative
  Cluster 0: 28 partidas
  Cluster 1: 25 partidas
  Cluster 2: 11 partidas
  Cluster 3: 15 partidas
  Cluster 4: 5 partidas
  Cluster 5: 13 partidas
Algoritmo: gmm
  Cluster 0: 26 partidas
  Cluster 1: 19 partidas
  Cluster 2: 14 partidas
  Cluster 3: 21 partidas
  Cluster 4: 8 partidas
  Cluster 5: 9 partidas
Algoritmo: optics
  Cluster -1: 87 partidas
  Cluster 0: 10 partidas
==================================================
Processing 132 matches from The International 2023
Autoencoder name: ti_2022_8_autoencoder
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [0]
Algoritmo: kmeans
  Cluster 0: 13 partidas
  Cluster 1: 18 partidas
  Cluster 2: 29 partidas
  Cluster 3: 14 partidas
  Cluster 4: 26 partidas
  Cluster 5: 32 partidas
Algoritmo: agglomerative
  Cluster 0: 29 partidas
  Cluster 1: 24 partidas
  Cluster 2: 18 partidas
  Cluster 3: 26 partidas
  Cluster 4: 32 partidas
  Cluster 5: 3 partidas
Algoritmo: gmm
  Cluster 0: 12 partidas
  Cluster 1: 20 partidas
  Cluster 2: 27 partidas
  Cluster 3: 13 partidas
  Cluster 4: 23 partidas
  Cluster 5: 37 partidas
Algoritmo: optics
  Cluster 0: 132 partidas
==================================================
Processing 195 matches from The International 2022
Autoencoder name: ti_2022_8_autoencoder
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [0]
Algoritmo: kmeans
  Cluster 0: 43 partidas
  Cluster 1: 27 partidas
  Cluster 2: 27 partidas
  Cluster 3: 35 partidas
  Cluster 4: 30 partidas
  Cluster 5: 33 partidas
Algoritmo: agglomerative
  Cluster 0: 51 partidas
  Cluster 1: 46 partidas
  Cluster 2: 35 partidas
  Cluster 3: 14 partidas
  Cluster 4: 26 partidas
  Cluster 5: 23 partidas
Algoritmo: gmm
  Cluster 0: 51 partidas
  Cluster 1: 22 partidas
  Cluster 2: 27 partidas
  Cluster 3: 21 partidas
  Cluster 4: 20 partidas
  Cluster 5: 54 partidas
Algoritmo: optics
  Cluster 0: 195 partidas
==================================================
Processing 758 matches from The International 2021
Autoencoder name: ti_2022_8_autoencoder
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [0]
Algoritmo: kmeans
  Cluster 0: 166 partidas
  Cluster 1: 82 partidas
  Cluster 2: 100 partidas
  Cluster 3: 124 partidas
  Cluster 4: 136 partidas
  Cluster 5: 150 partidas
Algoritmo: agglomerative
  Cluster 0: 170 partidas
  Cluster 1: 216 partidas
  Cluster 2: 90 partidas
  Cluster 3: 148 partidas
  Cluster 4: 44 partidas
  Cluster 5: 90 partidas
Algoritmo: gmm
  Cluster 0: 156 partidas
  Cluster 1: 44 partidas
  Cluster 2: 154 partidas
  Cluster 3: 82 partidas
  Cluster 4: 182 partidas
  Cluster 5: 140 partidas
Algoritmo: optics
  Cluster 0: 758 partidas
==================================================
Processing 97 matches from The International 2024
Autoencoder name: ti_2021_8_autoencoder
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [-1  0]
Algoritmo: kmeans
  Cluster 0: 15 partidas
  Cluster 1: 21 partidas
  Cluster 2: 11 partidas
  Cluster 3: 15 partidas
  Cluster 4: 15 partidas
  Cluster 5: 20 partidas
Algoritmo: agglomerative
  Cluster 0: 25 partidas
  Cluster 1: 8 partidas
  Cluster 2: 41 partidas
  Cluster 3: 4 partidas
  Cluster 4: 10 partidas
  Cluster 5: 9 partidas
Algoritmo: gmm
  Cluster 0: 16 partidas
  Cluster 1: 19 partidas
  Cluster 2: 12 partidas
  Cluster 3: 12 partidas
  Cluster 4: 15 partidas
  Cluster 5: 23 partidas
Algoritmo: optics
  Cluster -1: 89 partidas
  Cluster 0: 8 partidas
==================================================
Processing 132 matches from The International 2023
Autoencoder name: ti_2021_8_autoencoder
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [0]
Algoritmo: kmeans
  Cluster 0: 20 partidas
  Cluster 1: 28 partidas
  Cluster 2: 15 partidas
  Cluster 3: 19 partidas
  Cluster 4: 32 partidas
  Cluster 5: 18 partidas
Algoritmo: agglomerative
  Cluster 0: 28 partidas
  Cluster 1: 38 partidas
  Cluster 2: 23 partidas
  Cluster 3: 21 partidas
  Cluster 4: 13 partidas
  Cluster 5: 9 partidas
Algoritmo: gmm
  Cluster 0: 30 partidas
  Cluster 1: 27 partidas
  Cluster 2: 17 partidas
  Cluster 3: 17 partidas
  Cluster 4: 27 partidas
  Cluster 5: 14 partidas
Algoritmo: optics
  Cluster 0: 132 partidas
==================================================
Processing 195 matches from The International 2022
Autoencoder name: ti_2021_8_autoencoder
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [0]
Algoritmo: kmeans
  Cluster 0: 33 partidas
  Cluster 1: 22 partidas
  Cluster 2: 33 partidas
  Cluster 3: 43 partidas
  Cluster 4: 37 partidas
  Cluster 5: 27 partidas
Algoritmo: agglomerative
  Cluster 0: 40 partidas
  Cluster 1: 31 partidas
  Cluster 2: 28 partidas
  Cluster 3: 31 partidas
  Cluster 4: 29 partidas
  Cluster 5: 36 partidas
Algoritmo: gmm
  Cluster 0: 26 partidas
  Cluster 1: 15 partidas
  Cluster 2: 35 partidas
  Cluster 3: 35 partidas
  Cluster 4: 38 partidas
  Cluster 5: 46 partidas
Algoritmo: optics
  Cluster 0: 195 partidas
==================================================
Processing 758 matches from The International 2021
Autoencoder name: ti_2021_8_autoencoder
==================================================
Cluster labels: [0 1 2 3 4 5]
Agglomerative labels: [0 1 2 3 4 5]
GMM labels: [0 1 2 3 4 5]
OPTICS labels: [0]
Algoritmo: kmeans
  Cluster 0: 100 partidas
  Cluster 1: 154 partidas
  Cluster 2: 162 partidas
  Cluster 3: 72 partidas
  Cluster 4: 130 partidas
  Cluster 5: 140 partidas
Algoritmo: agglomerative
  Cluster 0: 236 partidas
  Cluster 1: 68 partidas
  Cluster 2: 220 partidas
  Cluster 3: 98 partidas
  Cluster 4: 48 partidas
  Cluster 5: 88 partidas
Algoritmo: gmm
  Cluster 0: 76 partidas
  Cluster 1: 148 partidas
  Cluster 2: 182 partidas
  Cluster 3: 90 partidas
  Cluster 4: 136 partidas
  Cluster 5: 126 partidas
Algoritmo: optics
  Cluster 0: 758 partidas
==================================================